package com.kun.companion.core.persistence.rule;

import com.kun.companion.core.persistence.strategy.SerializationStrategy;

/**
 * 数据持久化文件生成规则
 * 职责：
 * 1.获取需要生成的文件完整路径。
 * 2.获取需要读取的文件完整路径。
 *
 * @author gzc
 * @since 2024/8/21
 **/
public interface FileCreateRule {

    /**
     * 获取输出文件名（不包含扩展类型）
     *
     * @return 文件名
     */
    String getOutputFileName();

    /**
     * 获取完整输入文件路径
     *
     * @param baseStorageDirPath 基础目录
     * @param strategy           文件类型枚举
     * @return 完整输入文件路径
     */
    String getInputFilePath(String baseStorageDirPath, SerializationStrategy<?> strategy);

    /**
     * 获取完整输出文件路径
     *
     * @param baseStorageDirPath 基础目录
     * @param strategy           文件类型枚举
     * @return 完整输出文件路径
     */
    String getOutputFilePath(String baseStorageDirPath, SerializationStrategy<?> strategy);

    /**
     * 是否覆盖文件
     *
     * @return true覆盖
     */
    boolean isOverride();
}
